package com.crm.dao.mapper.customMapper.cluePoolManagerCustomMapper;

import com.crm.model.vo.cluePoolManager.ClueFollowChartByAdminVO;
import com.crm.model.vo.cluePoolManager.ClueFollowChartVO;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * @Author ：renshaorong
 * @Date ：2021/4/12
 */
public interface ClueFollowChartMapper {

    /**
     * 获取用户图表数据
     *
     * @param dateUnit---本周1/本月2/上月3
     * @param startTime              开始日期
     * @param endTime                结束日期
     * @return
     */
    List<ClueFollowChartVO> selectClueFollowChartVOList(@Param("dateUnit") int dateUnit, @Param("startTime") Date startTime,
                                                        @Param("endTime") Date endTime, @Param("userAccountId") String userAccountId);

    /**
     * 获取用户图表数据
     *
     * @param dateUnit---本周1/本月2/上月3
     * @param startTime              开始日期
     * @param endTime                结束日期
     * @return
     */
    List<ClueFollowChartByAdminVO> selectAdminClueFollowChartVOList(@Param("startTime") String startTime,
                                                                    @Param("endTime") String endTime, @Param("companyId") String companyId);

    /**
     * 获取时间列表（折线图X轴）
     *
     * @param dateUnit
     * @param startTime
     * @param endTime
     * @return
     * @Author renshaorong
     * @Date 2021/4/12
     */
    List<String> getTimeList(@Param("dateUnit") Integer dateUnit, @Param("startTime") Date startTime, @Param("endTime") Date endTime);

    /**
     * 获取用户跟进次数列表（折线图）
     *
     * @param dateUnit
     * @param startTime
     * @param endTime
     * @param type      跟进类型
     * @return
     * @Author renshaorong
     * @Date 2021/4/13
     */
    List<Integer> getFollowWayDataList(@Param("dateUnit") Integer dateUnit, @Param("startTime") Date startTime,
                                       @Param("endTime") Date endTime, @Param("type") Integer type,
                                       @Param("userAccountId") String userAccountId);

    /**
     * 用户总跟进次数饼状图数据获取
     *
     * @param dateUnit---本周1/本月2/上月3
     * @param startTime              开始日期
     * @param endTime                结束日期
     * @return
     * @Author renshaorong
     * @Date 2021/4/14
     */
    List<Map> getNumPieData(@Param("dateUnit") Integer dateUnit, @Param("startTime") Date startTime,
                            @Param("endTime") Date endTime, @Param("userAccountId") String userAccountId);

    /**
     * 用户总跟进次数饼状图数据获取
     *
     */
    List<Map> getAdminNumPieData(@Param("startTime") String startTime,
                            @Param("endTime") String endTime, @Param("companyId") String companyId);

    /**
     * 获取用户商机状态饼状图数据
     *
     * @param dateUnit
     * @param startTime
     * @param endTime
     * @param type      跟进类型
     * @return
     * @Author renshaorong
     * @Date 2021/4/14
     */
    List<Map<String, Object>> getBusinessStatusData(@Param("dateUnit") Integer dateUnit, @Param("startTime") Date startTime,
                                                    @Param("endTime") Date endTime, @Param("type") Integer type,
                                                    @Param("companyId") String companyId);

    /**
     * 获取用户过程状态饼状图数据
     *
     * @param dateUnit
     * @param startTime
     * @param endTime
     * @param type
     * @return
     * @Author renshaorong
     * @Date 2021/4/15
     */
    List<Map<String, Object>> getProcessStatusData(@Param("dateUnit") Integer dateUnit, @Param("startTime") Date startTime,
                                                   @Param("endTime") Date endTime, @Param("type") Integer type,
                                                   @Param("userAccountId") String userAccountId);

    List<Map<String, Object>> getAdminProcessStatusData(@Param("startTime") String startTime,
                                                   @Param("endTime") String endTime, @Param("type") Integer type,
                                                   @Param("companyId") String companyId);


    List<Integer> getFollowWayDataListByCompanyId(@Param("startTime") String startTime,
                                                  @Param("endTime") String endTime, @Param("type") Integer type,
                                                  @Param("companyId") String companyId);

}
